[Chapter 25] 25.8 Pitfalls
Author: Bryan Costales & Eric Allman
Date: 1999-01-06T19:39:56Z

#

| Chapter 25 Mailing Lists and ~/.forward |

## 25.8 Pitfalls

- When sendmail collects addresses, it discards duplicates. Prior to V8 sendmail, program entries in a ~/.forward file had to be unique; otherwise, an identical entry in another user's ~/.forward caused one or the other to be ignored. Usually, this is solved by requiring the program to take an argument. If the program won't accept an argument, add a shell comment inside the quotes.

- The database forms of the aliases(5) file contain binary integers. As a consequence, those database files cannot be shared via network-mounted file systems by machines of differing architectures. This has been fixed with V8 sendmail, which can use the 4.4 BSD UNIX db(3) form of database.

- As network-mounted file systems become increasingly common, the likelihood that a user's home directory will be temporarily unavailable increases. Prior to V8 sendmail this problem was not handled well. Instead of queueing mail until a user's home directory could be accessed, sendmail wrongly assumed that the ~/.forward didn't exist. This caused mail to be delivered locally when it should have been forwarded to another site. This can be fixed by using the `ForwardPath` (`J`) option (see Section 34.8.27) of V8 sendmail.

- Prior to V8 sendmail there was no way to disable user forwarding via ~/.forward files. At sites with proprietary or confidential information there was no simple way to prevent local users from arbitrarily forwarding confidential mail offsite. But ~/.forward files can be centrally administered by using the `ForwardPath` (`J`) option (see Section 34.8.27) of V8 sendmail, even to the point of completely disabling forwarding with `OJ/dev/null`.

- Programs run from ~/.forward files should take care to clear or reset all untrusted environment variables. Only V8 properly presets the environment.

- If a user's ~/.forward file evaluates to an empty address, the mail will be silently discarded. This has been fixed in IDA and V8 sendmail.

- A program run from a ~/.forward file is always run on the machine running sendmail. That machine is not necessarily the same as the machine housing the ~/.forward file. When user home directories are network-mounted, it is possible that one machine may support the program (such as /usr/ucb/vacation), while another may lack the program or call it something else (such as /usr/bsd/vacation). Note that if smrsh(1) is used, the path is ignored.

25.7 The User's ~/.forward File |  | 26. Logging and Statistics